Projektimi
Faza e projektimit perben fazen e planifikimit, menyren sesi do te ndertohet nderfaqja grafike ose funksioni logjik i sistemit. Ne kete faze do te planifikojme gjithcka, duke filluar nga skicimi i pamjeve grafike, deri ne paraqitjen e klasave qe do te perdoren per logjiken e sistemit.
Ndertimi i shablloneve grafike
Faqja qe do te ndertojme perbehet nga disa pjese kryesore te paraqitura edhe ne skemen e meposhtme:
Per te ndertuar shabllonet grafike, si nje lloj planifikimi per nderfaqet grafike te sistemit, kemi perdorur nje mjet online shume frytdhenes per skicimin dhe projektimin e skemave te llojeve te ndryshme. Kete mjet mund ta aksesoni ne URL-ne https://www.draw.io/.
Qe te kemi nje nderfaqe grafike sa me miqesore me perdoruesit (ang. user friendly) duhet qe nderfaqja jone te jete:
E thjeshte - Perdorimi i seksioneve te faqes te jete i thjeshte. Mos te kete veshtiresi ne kalimin nga faqja ne faqe, apo ne perdorimin e moduleve te vecanta p.sh. moduli i kerkimit te lajmeve.
Intuitive - Vizitoret duhet te kuptojne qe me pamjen e pare organizimin e faqes. Duhet te kuptohet pozicionimi i lajmeve dhe njoftimeve. Lehtesisht te aksesohet forma e kontaktit etj.
E bukur - Perdorimi i ngjyrave pa kontrast te larte, dhe bashkevepruese me njera tjetren. Kombinimi i ngjyrave ne menyren e duhur. Modulet e faqes te jene te dukshem. Teksti te jete i qarte dhe i lexueshem.
Secila prej faqeve te mesiperme duhet te perbehet nga koka dhe kemba te cilat nga anglishtja i quajme header dhe footer.Header-i dhe footer-i duhet te jene te njejte tek te gjitha faqet, pasi organizimi i faqes behet me i qarte. Midis header-it dhe footer-it gjendet pjesa e ndryshueshme nga faqja ne faqe, pra permbajtja e faqeve. Ajo eshte e vecante per secilen faqe. Ne figuren e meposhtme paraqitet skica e header-it:
Ne krye gjendet logoja e fakultetit. Me poshte vazhdon me nje menu, elementet e se ciles te drejtojne per tek faqet e tjera te rendesishme. Ne te djathte gjendet edhe modulin e kerkimit.
Footer-i i faqes do te jete shume i thjeshte, duke shfaqur disa informacione baze te fakultetit:
Pas paraqitjes se header-it dhe footer-it ndertojme shabllonet e seciles prej faqeve qe do te jene pjese e projektit tone.
Faqja kryesore, ajo cfare do te shohin per here te pare vizitoret, ne qender do te perbehet nga nje imazh ilustrues qe mund te jete nje ambjent i bukur ne fakultet, disa student qe diplomohen etj. Ne pjesen e djathte do te listojme lajmet e fundit, ndersa ne qender listojme njoftimet e fundit. Ne pjesen e majte listojme departamentet. Listimi i departamenteve sherben pasi ne momentin qe nje vizitor do te klikoje mbi nje departament te caktuar, do te hapet e njejta faqe por ne kete rast do te listohen vetem njoftimet dhe lajmet qe i perkasin departamentit ne fjale.
Skica e faqes kryesore:
Faqja RRETH FTI
do te aksesohet kur nje vizitor klikon mbi menune me po te njejtin emer. Kjo faqe do te paraqese ne qender te saj informacionet baze rreth fakultetit.
Pervec njoftimeve dhe lajmeve te fundit ne faqen kryesore te cilat jane te limituara per shkak te hapesires, jane krijuar dy faqe te dedikuara respektivisht per te listuar njoftimet dhe lajmet. Keto faqe mund t'i aksesojme duke klikuar mbi menu ne elementet NJOFTIME
dhe LAJME
.
Skica e faqes se njoftimeve:
Skica e faqes se lajmeve:
Ne krahun e majte, lista e departamenteve sherben per te kategorizuar njoftimet ose lajmet. Pra, ne momentin qe nje perdorues eshte ne faqen NJOFTIME
dhe klikon mbi njerin prej departamenteve, atehere do t'i hapet e njejta faqe por me njoftimet qe i perkasin vetem departamentit ne fjale.
Faqja e kontaktit hapet duke klikuar mbi menu KONTAKT
. Ndertimi i kesaj faqeje do te bazohet mbi skicen e meposhtme:
Per t'u loguar ne faqe perdoruesi duhet te klikoje mbi elementin HYR
te menuse. SKica e faqes se autentikimit shfaqet me poshte:
Pasi nje perdorues autentikohet ne sistem do te ridrejtohet tek profili ose ndryshe paneli i administrimit, i paraqitur me skicen e meposhtme:
Sa i perket faqeve te tjera dytesore si p.sh. menaxhimi i njoftimeve apo lajmeve, shtimi i nje njoftimi etj. nuk kemi ndertuar skica grafike, por eshte e sigurte qe do te perbehen nga header-i dhe footer-i i mesiperm.
Shabllonet e mesiperme do t'i perdorim si baze per te ndertuar nderfaqen grafike ne HTML dhe CSS. Kur nderfaqet grafike i skicojme fillimisht, eshte me e lehte per t'i ndertuar dhe konvertuar ne kod HTML dhe CSS.
Projektimi i klasave
Projekti yne do te permbaje 4 direktori:
Direktoria
libs
ne te cilen do te vendosen klasa te caktuara qe do te sherbejne ne formen e librarive, pra qe kryejne nje funksion specifik dhe te cilat jane te riperdorshme ne projekte te ndryshme.Direktoria
models
ne te cilen do te vendosen klasat qe kryejne veprime te drejtperdrejta me bazen e te dhenave, si shtimi, fshirja ose modifikimi i nje rekordi etj.Direktoria
admin
do te permbaje vetem skedaret te cilet jane te mbrojtur me autentikim, pra te gjithe skedaret qe per aksesim kerkojne me detyrim qe te jesh i loguar ne sistem.Direktoria
assets
do te permbaje skedare te ndryshem per stilizimin e faqes ose imazhe te ndryshme.
Ne direktorine rrenje te projektit do te vendosen te gjithe skedaret qe mund te aksesohen nga cfaredolloj vizitori.
Direktoria libs
do te perbehet nga 4 klasa te nevojshme per funksione te ndryshme ne sistem si autentikim, lidhja dhe funksione te ndryshme me bazen e te dhenave dhe menaxhimi i sesioneve. Me poshte paraqesim formen e tyre:
Klasa
Database
do te jete pergjegjese per veprimet qe do te kryhen me bazen e te dhenave. Sic e shohim dhe nga figura ajo perbehet nga nje variabel anetar i quajturconnection
qe mban lidhjen me bazen e te dhenave. Pjese e kesaj klase jane edhe 4 metoda shume te rendesishmeinsert
,update
,select
,delete
te cilat sherbejne respektivisht per shtimin, modifikimin, leximin dhe fshirjen e rekordeve ne nje tabele te caktuar.Klasa
AuthUser
do te jete pergjegjese per autentikimin e perdoruesve ne sistem, pra per administratoret ose pedagoget. Ajo permban disa metoda kryesore si:authenticate(email, password)
- Merr nje email dhe password ne hyrje dhe te kthen pergjigje nese perdoruesi ekziston.save(perdorues)
- Merr ne hyrje nje array me te dhenat e perdoruesit dhe e ruan ne sesion. Kjo metode do te perdoret ne momentin qe metodaauthenticate
kthen pergjigje pozitive.is_logged()
- Kontrollon nese perdoruesi eshte i autentikuar apo jo, dmth. ne rast se perdoruesi eshte ruajtur ne sesion atehere ai quhet i autentikuar, perndryshe jo.logout()
- Metoda qe sherben per te bere daljen e perdoruesit nga sistemi, pra kjo metode fshin sesionin e krijuar per perdoruesin e loguar, dhe e kthen ate ne te paloguar.get()
- Metode qe na sherben qe te marrim te dhenat e perdoruesit te loguar, vetem gjate kohes qe ai eshte i loguar.
Klasa
Session
na sherben per te menaxhuar sesionet e faqes, pra ne vend qe te perdorim direkt variablin global$_SESSION
, kemi krijuar klasesnSession
qe me ane te disa metodave specifike ben nisjesn, vendosjen, marrjen apo dhe fshirjen e sessioneve te ndryshme.Klasa
BaseModel
do te jete klasa prind per te gjithe modelet qe do te krijohen ne direktorinemodels
. Ajo perbehet vetem nga nje variabel$db
e cila eshte nje instance e klasesDatabase
. Ky variabel do te trashegohet nga modelet dhe do te mund te perdoret per te kryer funksione specifike siinsert
,update
,select
osedelete
.
Direktoria models
do te perbehet nga 4 klasa (modele) te nevojshme per sistemin tone:
- Departament
- Perdorues
- Njoftim
- Artikull
Me ane te ketyre klasave do te mundemi te menaxhojme te gjitha veprimet qe kryhen me bazen e te dhenave. Secila prej klasave trashegon klasen BaseModel
, e cila permban variablin $db
te tipit Database
.
Me poshte paraqesim skemen e ketyre 4 klasave:
Nese veshtrojme ne imazhin e mesiperm veme re qe te gjitha klasat perbehen nga disa metoda kryesore si:
getId()
- Sherben per te marre vleren e fushesid
ne databaze te elementit specifik.save()
- Sherben per te ruajtur ne databaze elementin specifik. Ne kete rast mund te jete shtim ose modifikim i rekordit.delete()
- Sherben per te fshire nga databaza elementin specifik nepermjet te cilit u therrit kjo metode. P.sh.$element->delete()
, fshin elementin nga databaza.getById(id)
- Sherben per te lexuar nga databaza nje rekord specifik ne baze te id-se qe i kalojme si parametergetList(condition)
- Lexon nga databaza te gjithe rekordet qe plotesojne nje kusht te caktuar te kaluar si parameter.
Klasa
Departament
perfaqeson nje departament te fakultetit dhe permban si variabla anetare nje numer te njejte me fushat ne tabelendepartamentet
ne databaze. Ashtu sic fushat ne databaze edhe ketu variablat kane te njejtat emra pra:id
,emri
,pershkrimi
.Klasa
Perdorues
perfaqeson nje perdorues te sistemit, pra pedagog ose administrator dhe permban si variabla anetare nje numer te njejte me fushat ne tabelenperdoruesit
ne databaze. Ashtu sic fushat ne databaze edhe ketu variablat kane te njejtat emra pra:id
,emri
,email
,password
,tipi
,id_departament
. Pervec metodave te permenduara me siper te cilat gjenden ne cdo model, ne kete model kemi edhe disa metoda te tjera:setId()
- Sherben per te vendosur id-ne e perdoruesit specifiktoArray()
- Konverton perdoruesin nga nje objekt i tipitPerdorues
ne nje array. Pra, nese fushat therriten ne formen$perdorues->emri
, pas konvertimit i aksesojme ne formen$perdorues['emri']
isAdmin()
- Kontrollon nese nje perdorues eshte administrator apo jo. Kthentrue
ne rast se po. Kontrolli behet duke kontrolluar fushentipi
, ne rast se ajo ka vleren0
atehere perdoruesi eshte administrator perndryshe jo.
Klasa
Njoftim
perfaqeson nje njoftim te shkruar nga nje pedagog dhe permban si variabla anetare nje numer te njejte me fushat ne tabelennjoftimet
ne databaze. Ashtu sic fushat ne databaze edhe ketu variablat kane te njejtat emra pra:id
,titulli
,pershkrimi
,data
,id_departament
.Klasa
Artikull
perfaqeson nje lajm te shkruar nga nje pedagog dhe permban si variabla anetare nje numer te njejte me fushat ne tabelenartikujt
ne databaze. Ashtu sic fushat ne databaze edhe ketu variablat kane te njejtat emra pra:id
,titulli
,pershkrimi
,data
,id_departament
.